package com.ceair.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ceair.entity.ActReProcdef;
import com.ceair.entity.request.*;
import com.ceair.entity.vo.DynamicParametersVO;

import java.util.List;

/**
 * <p>
 * 流程部署定义信息表 服务类
 * </p>
 *
 * @author wangbaohai
 * @since 2025-04-20
 */
public interface IActReProcdefService extends IService<ActReProcdef> {

    /**
     * 分页查询流程定义信息。
     *
     * @param queryActReProcdefReq 查询条件请求对象，包含分页信息和筛选条件。
     *                             该对象通常包括页码、每页大小以及可能的过滤字段（如流程定义名称、状态等）。
     * @return 返回一个分页结果对象，包含符合条件的流程定义信息。
     * 结果类型为 Page<ActReProcdef>，其中 ActReProcdef 表示流程定义的实体类，
     * Page 表示分页封装类，通常包含数据列表、总记录数等信息。
     */
    Page<ActReProcdef> queryActReProcdefWithPage(QueryActReProcdefReq queryActReProcdefReq);

    /**
     * 操作流程定义的函数，根据传入的请求对象执行相应的操作。
     *
     * @param operateActReProcdefReq 包含操作流程定义所需信息的请求对象。
     *                               该对象通常包含流程定义的ID、操作类型（如启动、挂起、删除等）
     *                               以及其他与操作相关的参数。
     * @return Boolean 返回操作结果。如果操作成功，则返回 true；否则返回 false。
     * 返回值可以用于判断操作是否按预期完成。
     */
    Boolean operateProcessDefinitionById(OperateActReProcdefReq operateActReProcdefReq);

    /**
     * 查询图片信息的函数。
     * <p>
     * 根据传入的查询请求对象，返回对应的图片信息字符串。
     *
     * @param queryImageOrXmlReq 查询请求对象，包含查询图片所需的相关参数。
     *                           该对象的具体结构和内容需符合业务逻辑要求。
     * @return 返回一个字符串，表示查询到的图片信息。
     * 如果查询失败或无结果，返回值的具体含义需根据业务逻辑定义。
     */
    String queryImage(QueryImageOrXmlReq queryImageOrXmlReq);

    /**
     * 根据查询条件生成并返回查询的XML字符串
     * 此方法用于将查询条件封装对象转换为XML格式的字符串，以便进行后续的查询操作
     * 它接受一个包含查询条件的请求对象，可以是图像信息或XML格式的查询条件
     *
     * @param queryImageOrXmlReq 包含查询条件的请求对象，可以是图像信息或XML格式的查询条件
     * @return 返回根据查询条件生成的XML字符串
     */
    String queryXML(QueryImageOrXmlReq queryImageOrXmlReq);

    /**
     * 查询动态参数信息
     * <p>
     * 该方法用于根据给定的查询条件获取动态参数列表每个动态参数都封装在一个DynamicParametersVO对象中
     *
     * @param queryDynamicParametersReq 查询动态参数的请求对象，包含了查询动态参数所需的条件和参数
     * @return 返回一个List集合，集合中每个元素都是一个DynamicParametersVO对象，包含了一组动态参数信息
     */
    List<DynamicParametersVO> queryDynamicParameters(QueryDynamicParametersReq queryDynamicParametersReq);

    /**
     * 启动流程方法
     * 该方法接收一个启动流程请求对象，并尝试启动一个新的流程实例
     * 主要用途是作为流程管理的一部分，允许外部系统或用户通过提供特定的请求参数来启动定义好的流程
     *
     * @param startProcessReq 启动流程所需的请求对象，包含启动流程所需的所有参数和信息
     * @return 返回一个布尔值，表示流程是否成功启动true表示成功启动，false表示启动失败
     */
    Boolean startProcess(StartProcessReq startProcessReq);

}
